// 1. 初始化变量：登录状态、收藏音乐列表
let currentUser = null;
let likedMusicList = [];

// 页面DOM加载完毕后执行（替换window.onload，适配jQuery风格）
$(function () {
    // 检查登录状态（调用公共checkLogin函数）
    currentUser = checkLogin();
    if (currentUser) {
        $("#user-name").text(currentUser.username);
        // 加载收藏列表（无参数时查全部）
        loadLikedMusicList();
    }

    // 初始化播放器（公共播放控制逻辑）
    initPlayer();

    // 侧边栏切换（移动端）
    $("#menu-toggle").click(function () {
        $("#sidebar").toggleClass("active");
    });

    // 退出登录
    $("#user-logout").click(function () {
        sessionStorage.removeItem("userInfo");
        window.location.href = "../pages/login.html";
    });

    // 搜索收藏的音乐（输入时实时筛选）
    $("#search-input").on("input", function () {
        const title = $(this).val().trim();
        loadLikedMusicList(title);
    });

    // 当前播放音乐取消收藏（默认已收藏）
    $("#now-playing-like").click(function () {
        const currentTitle = $("#now-playing-title").text();
        if (currentTitle === "未播放音乐") return;

        // 找到当前播放的音乐
        const currentMusic = likedMusicList.find(m => m.title === currentTitle);
        if (currentMusic) {
            // 调用取消收藏函数（传递音乐ID和按钮元素）
            cancelLike(currentMusic.id, $(this));
        }
    });
});

// 2. 加载收藏列表（对接后端/loveMusic/getLoveMusic接口，Ajax GET请求）
function loadLikedMusicList(title = null) {
    $.ajax({
        url: "/loveMusic/getLoveMusic", // 后端接口路径（与LoveMusicController一致）
        type: "GET", // 请求方式（后端接口支持GET）
        data: { title: title }, // 传参：title（可选，搜索用），与后端参数名一致
        dataType: "json", // 后端返回JSON格式
        success: function (res) {
            console.log("收藏列表接口返回：", res);
            // 后端返回status=0代表成功（参考ResponseBodyMessage格式）
            if (res.status === 0) {
                likedMusicList = res.data; // 存储收藏列表到全局变量
                renderLikedMusicList(res.data); // 渲染列表
            } else {
                showToast("加载收藏列表失败：" + (res.message || "未知错误"));
            }
        },
        error: function (xhr) {
            console.error("加载收藏列表失败（网络错误）：", xhr);
            showToast("加载收藏列表失败，请检查网络");
        }
    });
}

// 3. 渲染收藏列表（移除封面图，保留原有UI结构）
function renderLikedMusicList(musics) {
    const $listEl = $("#liked-music-list"); // 用jQuery选择器替代getElementById
    $listEl.empty(); // 清空列表（替代innerHTML = ""）

    // 无收藏音乐时显示提示
    if (musics.length === 0) {
        $listEl.html('<div class="text-center text-secondary mt-10">您还没有收藏任何音乐</div>');
        return;
    }

    // 循环渲染音乐项
    musics.forEach((music, index) => {
        const isOwner = currentUser && music.userId === currentUser.id; // 判断是否当前用户上传

        // 拼接音乐项HTML（保留原有结构）
        const $musicItem = $(`
            <div class="music-item" data-id="${music.id}">
                <div class="music-info">
                    <div class="music-index">${index + 1}</div>
                    <div class="music-detail">
                        <div class="music-title">${music.title}</div>
                        <div class="music-singer">${music.singer}</div>
                    </div>
                </div>
                <div class="music-extra">
                    <div class="music-album">${music.time}</div>
                    <div class="music-duration">${music.time}</div>
                    <div class="music-actions">
                        <!-- 取消收藏按钮：调用cancelLike，传递音乐ID -->
                        <button class="music-btn like-btn liked" onclick="cancelLike(${music.id}, this)">
                            <span class="icon icon-heart"></span>
                        </button>
                        <!-- 删除按钮：仅当前用户上传显示 -->
                        ${isOwner ? `
                            <button class="music-btn delete-btn" onclick="deleteMusic(${music.id})">
                                <span class="icon icon-trash"></span>
                            </button>
                        ` : ""}
                    </div>
                </div>
            </div>
        `);

        // 音乐项点击播放（绑定事件，替代onclick属性）
        $musicItem.find(".music-info").click(function () {
            playMusic(music); // 调用公共播放函数
        });

        // 添加到列表容器
        $listEl.append($musicItem);
    });
}

// 4. 取消收藏（对接后端/loveMusic/cancelLoveMusic接口，Ajax GET请求）
function cancelLike(musicId, btnEl) {
    // 阻止事件冒泡（替代event.stopPropagation()）
    $(btnEl).click(function (e) {
        e.stopPropagation();
    });

    // 确认取消收藏
    if (!confirm("确定要取消收藏这首音乐吗？")) return;

    $.ajax({
        url: "/loveMusic/cancelLoveMusic", // 后端接口路径（与LoveMusicController一致）
        type: "GET", // 请求方式（后端接口支持GET）
        data: { musicId: musicId }, // 传参：musicId，与后端参数名一致
        dataType: "json",
        success: function (res) {
            console.log("取消收藏接口返回：", res);
            if (res.status === 0) {
                showToast(res.message || "取消收藏成功");
                loadLikedMusicList(); // 重新加载收藏列表
            } else {
                showToast("取消收藏失败：" + (res.message || "未知错误"));
            }
        },
        error: function (xhr) {
            console.error("取消收藏失败（网络错误）：", xhr);
            showToast("取消收藏失败，请检查网络");
        }
    });
}

// 5. 删除音乐（对接后端/music/delete接口，Ajax GET请求）
function deleteMusic(musicId) {
    // 确认删除
    if (!confirm("确定要删除这首音乐吗？删除后收藏也会同步取消")) return;

    $.ajax({
        url: "/music/delete", // 后端接口路径（与MusicController一致）
        type: "GET", // 请求方式（后端接口支持GET）
        data: { musicId: musicId }, // 传参：musicId，与后端参数名一致
        dataType: "json",
        success: function (res) {
            console.log("删除音乐接口返回：", res);
            if (res.status === 0) {
                showToast(res.message || "删除成功");
                loadLikedMusicList(); // 重新加载收藏列表
            } else {
                showToast("删除失败：" + (res.message || "未知错误"));
            }
        },
        error: function (xhr) {
            console.error("删除音乐失败（网络错误）：", xhr);
            showToast("删除失败，请检查网络");
        }
    });
}